As technology progresses, considerable amounts of information are becoming digitized, so as to be accessible through databases, servers and other storage media, along networks, including the Internet. When a user seeks certain information, it is essential to provide the most relevant information in the shortest time. As a result, search engines have been developed, to provide users with such relevant information.
Search engines are programs that search documents for specified keywords, and return a list of the documents where the keywords were found. The search engines may find these documents on public networks, such as the World Wide Web (WWW), newsgroups, and the like.
Contemporary search engines operate by indexing keywords in documents. These documents include, for example, web pages, and other electronic documents. Keywords are words or groups of words, that are used to identify data or data objects. Users typically enter words, phrases or the like, typically with Boolean connectors, as queries, on an interface, such as a Graphical User Interface (GUI), associated with a particular search engine. The search engine isolates certain words in the queries, and searches for occurrences of those keywords in its indexed set of documents. The search engine then returns one or more listings to the GUI. These listings typically include a hypertext link to a targeted web site, that if clicked by the user, will direct the browser associated with the user to the targeted web site.
Other contemporary search engines have moved away from keyword searching, by allowing a user to enter a query in natural language. Natural language, as used here and throughout this document (as indicated below), includes groups of words that humans use in their ordinary and customary course of communication, such as in normal everyday communication (general purpose communication) with other humans, and, for example, may involve writing groups of words in an order as though the writer was addressing another person (human). These systems that use natural language are either template based systems or knowledge based systems. These systems can operate together or independently of each other.
Template based systems employ a variety of question templates, each of which is responsible for handling a particular type of query. For example, templates may be instruction templates (How do I “QQ”?), price templates (How much does “RR” cost), direction templates (Where is “SS” located?), historical templates (When did “TT” occur), contemporary templates (What is the population of “UU”?, Who is the leader of “VV”?), and other templates, such as (What is the market cap of “WW”?, What is the stock price of “XX”?). These templates take the natural language entered and couple it with keywords, here for example, “QQ”-“XX” and may further add keywords, in order to produce a refined search for providing a response to the query.
Knowledge based systems are similar to template based systems, and utilize knowledge that has been previously captured to improve on searches that would utilize keywords in the query. For example, a search using the keyword “cats” might be expanded by adding the word “feline” from the knowledge base that cats are felines. In another example, the keyword “veterinarians” and the phrase “animal doctor” may be synomonous in accordance with the knowledge base.
However, both the template and knowledge based systems, although using some natural language, continue to conduct keyword based searches. This is because they continue to extract keywords from the natural language queries entered, and search based on these keywords. While the searches conducted are more refined than pure keyword based search engines, these systems do not utilize the natural language as it is written, and in summary, perform merely refined keyword searches. The results of such searches are inaccurate and have little if any chance of returning a precise answer for the query.